
Display Programming
There were many options available on which display to use some of the options listed-
OLED, TFT, LCD, LED We needed a display with some basic features like displaying
alphabets and numbers, easy to use, compatible with Arduino Nano(Atmega328p ) and
preferably low cost. We researched about different displays like OLED - 128x64 or
128x32 pixels, I2C or SPI interface, High contrast, low power consumption, supports
graphics ,Small screen size, but relatively higher cost than the LCD display. TFT - SPI
interface, Supports full-color graphics, touchscreen option, High power usage, relatively
higher cost than OLED, LCD. LED - Medium to high power usage, SPI interface and
relatively similar, a little costlier than LCD. LCD - Uses liquid crystals to display char-
acters in rows and columns, low power consumption, Parallel or I2C interface available,
easy to use out of these LCD was the one which was most suitable for the Function
generator in terms of cost, needed functionality of displaying characters and numbers ,
compatibility with the Arduino (Atmega328p) and easy to use in LCD there were 2
types available for interface/ connection. parallel and I2C - chose I2C as it is easy to use,
connect, and reduces the analog pins required for the display 4 pins required for parallel
connection(excluding ground and Vcc) , 2 pins required for I2C (excluding ground and
Vcc) 20X4 i.e 20 characters X 4 lines was chosen to match and implement the displays
as present in the function generator and thus reached the conclusion for LCD display
with I2C interface and 20X4 and then tried programming and simulation for the LCd in
WOKWI and TinkerCad using the LiquidCrystalI2C library and after learning all the
required commands in the LiquidCrystalI2C library, coded for the display
4.9.2 Hardware Iterations
Laser Cutting
Last week, our focus was on designing the outer body of the function generator using
acrylic sheets and a laser cutter. We finalized a structure consisting of five sides, leaving
the top part removable for accessibility. To achieve this, we designed a single acrylic
piece with a central quadrilateral surrounded by four adjacent sections. These
sections will then be bent using a blow dryer and joined using chloroform (acrylic
solvent) for a seamless finish.
For the front panel, we incorporated cutouts for the button, screen, and knob, along
with engraved labels for clarity. To ensure easy removal of the top part when needed,
we explored various mechanisms such as sliders and locks. After discussion, we decided
on a slit-and-wedge friction-fit system, which would allow the top panel to stay
securely in place while still being removable when necessary.
To validate our approach, we laser-cut a test piece to check the functionality of the slit
mechanism, which worked as expected. Moving forward, we will proceed with cutting
and assembling the complete outer body while implementing the finalized design.
Circuit Design
This week, our team improved our waveform generation approach. Initially, we were
generating all waveforms directly through code executed on an Arduino. However, we
realized that at higher frequencies, this method introduced errors. To address this, we
Page 77 of 114